The present disclosure relates generally to software testing, and particularly to techniques for autonomously debugging software applications to automatically identify errors, as well as the source of those errors.
There are many different software tools and paradigms that are currently available with which software developers can create software applications. Such applications are designed to execute as standalone processes on various different computing devices, while others are designed and implemented to execute on computer servers disposed in a communications network. In some instances, software applications are designed to communicate with each other using a client-server model over such networks to request and retrieve data.
Prior to releasing an application, software developers and test engineers typically execute a rigorous series of tests to verify that the application is working as designed. In some cases, third party testing organizations may also perform a series of independent tests on the application. Regardless of who performs the testing, however, application developers will typically debug the application code to locate the source of a defect whenever an application under test outputs an incorrect or unexpected value.
Current debugging procedures require specialized software tools. Additionally, developers utilizing such tools must set breakpoints and trace the execution of the application code step-by-step to locate the source of the error in the application code. Much of the work in these cases, at least initially, requires the developer to make a “best guess” as to where the source of the error is located in the code. In some instances, whoever performs the test, and/or analyzes the test results, can identify where the error occurred by sifting through a rather large number of entries in one or more log files output by the application during execution. However, these entries may not identify the particular application code that is the cause of the error.